home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 / IRIX 6.2 CD2.iso / dist / outbox.idb / var / www / cgi-bin / webdist.cgi.z / webdist.cgi
Text File  |  1996-06-10  |  4KB  |  155 lines

  1. #!/usr/sbin/perl
  2.  
  3.  
  4. ## Copyright 1995, Silicon Graphics, Inc.
  5. ## All Rights Reserved.
  6. ##
  7. ## This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  8. ## the contents of this file may not be disclosed to third parties, copied or
  9. ## duplicated in any form, in whole or in part, without the prior written
  10. ## permission of Silicon Graphics, Inc.
  11. ##
  12. ## RESTRICTED RIGHTS LEGEND:
  13. ## Use, duplication or disclosure by the Government is subject to restrictions
  14. ## as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  15. ## and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  16. ## successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  17. ## rights reserved under the Copyright Laws of the United States.
  18.  
  19.  
  20. # Process cgi args
  21.  
  22. if( $ENV{'REQUEST_METHOD'} eq "GET" )
  23. {
  24.    $buffer=$ENV{'QUERY_STRING'} ;
  25. }
  26. else
  27. {
  28.    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}) ;
  29. }
  30. @pairs = split(/&/, $buffer) ;
  31. foreach (@pairs)
  32. {
  33.    tr/+/ / ;
  34.    ($name,$value)=  split(/=/) ;
  35.    $value        =~ s/%(..)/pack("c",hex($1))/ge ;
  36.    $name         =~ s/%(..)/pack("c",hex($1))/ge ;
  37.  
  38.    $in{$name} = $value;
  39.  
  40. }
  41.  
  42.  
  43.  
  44. $distloc=$in{distloc};
  45. $pageloc=$in{pageloc};
  46.  
  47. if ($distloc eq "") {
  48.     &report_fatal_error("<H3>Error: Distribution Directory cannot be empty!</H3>");
  49. }
  50.  
  51.  
  52. # Execute webdist here to create the page
  53.  
  54. $pid = fork;
  55.  
  56. if ($pid == 0) {
  57.  
  58.     # set environment variable so that xconfirm window is displayed
  59.     # this var is not set in a CGI script
  60.     $ENV{"DISPLAY"} = ":0.0";
  61.  
  62.     # Close stdout so that xconfirm writes to /dev/null
  63.     close(STDOUT);
  64.     open(STDOUT, "/dev/null");
  65.  
  66.     exec("/usr/bin/X11/xconfirm",
  67.      "-c",
  68.      "-exclusive",
  69.      "-B", "Dismiss",
  70.      "-icon", "info",
  71.      "-header", "Web Software Distribution Tool",
  72.      "-noframe",
  73.      "-t", "The Web Software Distribution Page is being created.",
  74.      "-t", "This may take a few minutes if there are many products.",
  75.      "-t", "",
  76.      "-t", "You may dismiss this dialog at any time without stopping",
  77.      "-t", "the Web Distribution Tool by pressing \"Dismiss\".",
  78.      "-t", "",
  79.      "-t", "You may cancel creating this page by pressing the",
  80.      "-t", "\"Stop\" button in your Web browser (eg Netscape).");
  81.  
  82.      exit 0;
  83. }
  84.  
  85. $output = `/usr/etc/webdist $distloc $pageloc 2>&1`;
  86.  
  87. kill(2, $pid);
  88.  
  89. $filename = "/usr/tmp/webdist.$$.html";
  90.  
  91. if ($? != 0) {
  92.     &report_fatal_error($output);
  93. } else {
  94.     print "Content-type: text/html\n\n";
  95.     print "<HTML>\n";
  96.     print "<BODY BACKGROUND=\"/webdist/images/background.jpeg\">\n";
  97.     
  98.     unless (open(OUT, ">$filename")) {
  99.     print "<H3>Error: Cannot open temporary file $filename</H3>";
  100.     } else {
  101.     print OUT "$output";
  102.     print "<H3 ALIGN=\"CENTER\">Web Software Distribution Page Created.<BR>\n";
  103.     print "(You can see what the page will look like below)</H3>\n";
  104.     print "<HR>\n";
  105.     print "<H3 ALIGN=\"CENTER>Installing the Web Software Distribution Page<BR>\n";
  106.     print "(Do this now, while you can still refer to this page for reference)</H3>";
  107.     print "<P>\n";
  108.     print "The new Web Software Distribution Page has been created at\n";
  109.     print "location <SAMP>$filename</SAMP>.\n";
  110.     $dist = `basename $distloc`;
  111.     chop($dist);
  112.     webdist:chop($disthost = `hostname`);
  113.     print "<P> You will need to <B>move this file</B> to\n";
  114.     print "the location <SAMP>/var/www/htdocs/dist/$dist.html</SAMP>.\n";
  115.     print "</P>\n";
  116.     print "<HR>\n";
  117.     print "<H3 ALIGN=\"CENTER>Using the Web Software Distribution Page</H3>\n";
  118.     print "<P>\n";
  119.     print "After installing this page, users on the network\n";
  120.     print "can install software from it by using\n";
  121.     print "the URL <SAMP>http://$disthost/dist/$dist.html</SAMP>.\n";
  122.     print "</P>\n";
  123.     print "<HR>\n";
  124.     print "<P>\n";
  125.     print "The following is what the new Web Software Distribution Page will look like:";
  126.     print "</P>\n";
  127.     print "<HR>\n";
  128.     print "$output";
  129.     }
  130.  
  131. }
  132.  
  133.  
  134. #
  135. # Report fatal error 
  136. #
  137.  
  138. sub report_fatal_error {
  139.     local ($msg) = @_;
  140.  
  141.     print "Content-type: text/html\n\n";
  142.     print "<HTML>\n";
  143.     print "<HEAD>\n";
  144.     print "<BODY BACKGROUND=\"/webdist/images/background.jpeg\">\n";
  145.     print "<TITLE>Web Software Distribution Tool Error</TITLE>\n";
  146.     print "</HEAD>\n";
  147.     print "<BODY BACKGROUND=\"webdist/images/background.jpeg\">\n";
  148.     print "<H3>Web Software Distribution Tool Error</H3>\n";
  149.     print "$msg<P>\n";
  150.     print "Return to <A HREF=../webdist.html>webdist</A> page.";
  151.     print "</BODY>\n";
  152.  
  153.     exit 1;
  154. }
  155.